<?php //ver.20080109

/*
 * Nome libreria: log.inc.php
 * Descrizione: classe per loggare gli eventi
 *
 * Autore: eugenio@blux.org
 * Ultima modifica (data e descrizione):
 *
 */


class Log {

    var $evento;
    var $path;
    var $file;
    var $livello;
    var $indice_livello; 
    var $iplog;
    var $utente;
    
    
    function Log() { /* costruttore della classe */
        $this->evento="nothing";
        $this->path="./";
        $this->file=date("Ymd").".log";
        $this->livello[0]="INFO";
        $this->livello[1]="WARNING";
        $this->livello[2]="ERROR";
        $this->livello[3]="DEBUG";
        $this->indice_livello=0;
        $this->iplog=true;
        $this->utente="anonymous";
    }


    function path_log($nuovo_path) {
        $returned = false;
        if ($nuovo_path!="") {
           if (@is_writable($nuovo_path)) {
             $this->path=$nuovo_path."/";
             $returned = true;
           }
        }
        return $returned;
    }
    
    
    
    function log_evento($evento, $liv) {
        $returned = false;
        
        if ($fp=@fopen($this->path.$this->file, "a")) {
                $this->evento=$evento;
                if ($this->iplog) $ip=$_SERVER["REMOTE_ADDR"]."|"; else $ip="";
                $buffer=date("Ymd_H:i:s")."|".$this->livello[$liv]."|$this->utente|".$ip.$this->evento.chr(13).chr(10);
                if (@fwrite($fp, $buffer)) {
                    $this->indice_livello=$liv;
                    $returned = true;
                } else {
                    echo "Errore: non riesco a scrivere sul file di log (".$this->path.$this->file."))";
                }
            @fclose($fp);
        } else {
            echo "Errore: non riesco ad aprire il file di log (".$this->path.$this->file."))";
        }
        
        return $returned;
    }
    
    
    
    function error($evento) { /* scrive nel log un evento di errore*/
        return $this->log_evento($evento, 2);
       
    }
    
    function info($evento) { /* scrive nel log un evento di informazione*/
        return $this->log_evento($evento, 0);
    }
    
    function warning($evento) { /* scrive nel log un evento di warning*/
        return $this->log_evento($evento, 1);
    }
    
    function debug($evento) { /* scrive nel log un evento di debug*/
        return $this->log_evento($evento, 3);
    }
    
    function iplog_on() { /* abilita la scrittura degli ip nel log */
      $this->iplog=true;
    }
    
    function iplog_off() { /* disabilita la scrittura degli ip nel log */
      $this->iplog=false;
    }
    
}

?>
